﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//static int arr[99999];
//int* printNumbers(int n, int* returnSize) {
//    int cmp = n, x = 0;
//    while (cmp--)
//    {
//        n = x * 10 + 9;
//        x = n;
//    }
//    int i = 0;
//    for (i = 1; i <= n; i++)
//    {
//        arr[i - 1] = i;
//    }
//    *returnSize = n;
//    return arr;
//}
//
//int main()
//{
//    int x = 0;
//    printNumbers(2, &x);
//    for (int i = 0; i < x; i++)
//    {
//        printf("%d\n", arr[i]);
//    }
//	return 0;
//}

//#include <stdio.h>
//
//int main() {
//    int year, month, day;
//    scanf("%d", &year);
//    scanf("%d", &month);
//    scanf("%d", &day);
//    int arr[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
//    int days = 0, i = 0;
//    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
//    {
//        for (i = 0; i < month - 1; i++)
//        {
//            days += arr[i];
//        }
//        if (month > 2)
//        {
//            days += day + 1;
//        }
//        else
//        {
//            days += day;
//        }
//    }
//    else
//    {
//        for (i = 0; i < month - 1; i++)
//        {
//            days += arr[i];
//        }
//        days += day;
//    }
//    printf("%d", days);
//    return 0;
//}

//int main()
//{
//	char s[] = { "\\123456\123456\t" };
//	printf("%d\n", strlen(s));
//	printf("%s", s);
//	return 0;
//}

//int main()
//{
//	//char a[14] = { "hello world!" };
//	char a[14];
//	a = "hello world!";
//	return 0;
//}

//int main()
//{
//	int a = 1, b = 2;
//	int const* c = 21;
//	const int* d = 32;
//	int* const e = &a;
//	int const* const f = &a;
//	*c = 32;
//	*d = 43;
//	e = &b;
//	f = 0x321f;
//	return 0;
//}

//int main()
//{
//	int n = 0;
//	char ch = 0;
//	//while (ch=getchar() != '\n')
//	//{
//	//	n++;
//	//}
//	for (n = 0; ch=getchar() != '\n'; n++);
//	printf("%d", n);
//	return 0;
//}

//int main()
//{
//	int m, n;
//	scanf("%d%d", &m, &n);
//	while (m != n)
//	{
//		while (m > n)m = m - n;
//		while (n > m)n = n - m;
//	}
//	printf("%d", m);
//	return 0;
//}

/*
集合 s 包含从 1 到 n 的整数。不幸的是，因为数据错误，导致集合里面某一个数字复制了成了集合里面的另外一个数字的值，
导致集合 丢失了一个数字 并且 有一个数字重复 。

给定一个数组 nums 代表了集合 S 发生错误后的结果。

请你找出重复出现的整数，再找到丢失的整数，将它们以数组的形式返回。
*/



//int* findErrorNums(int* nums, int numsSize) {
//    int* arr = (int*)malloc(sizeof(int) * 2);
//    if (arr == NULL)
//    {
//        perror("malloc");
//        return NULL;
//    }
//    int N = numsSize;
//    int sum = N * (N + 1) / 2;
//    int i = 0, x = 0;
//    for (i = 0; i < numsSize - 1; i++)
//    {
//        if (nums[i] == nums[i + 1])
//        {
//            x = nums[i];
//        }
//    }
//    for (i = 0; i < numsSize; i++)
//    {
//        sum -= nums[i];
//    }
//    *arr = x;
//    *(arr + 1) = x + sum;
//    return arr;
//}
//
//int main()
//{
//    int arr[4] = { 1,2,2,4 };
//    int* arr2=findErrorNums(arr, 4);
//    for (int i = 0; i < 2; i++)
//    {
//        printf("%d ", *(arr2 + i));
//    }
//    free(arr2);
//    arr2 = NULL;
//    return 0;
//}

//int main()
//{
//	char a = 'z';
//	printf("%d", a);
//	return 0;
//}

/*
小明同学最近开发了一个网站，在用户注册账户的时候，需要设置账户的密码，
为了加强账户的安全性，小明对密码强度有一定要求：

1. 密码只能由大写字母，小写字母，数字构成；

2. 密码不能以数字开头；

3. 密码中至少出现大写字母，小写字母和数字这三种字符类型中的两种；

4. 密码长度至少为8

现在小明受到了n个密码，他想请你写程序判断这些密码中哪些是合适的，哪些是不合法的。
*/

//#include <stdio.h>
//
//int main() {
//    int n, count = 0, flag = 0, flag2 = 0;
//    char ch;
//    scanf("%d", &n);
//    getchar();
//    while (n--)
//    {
//        while ((ch = getchar()) != '\n')
//        {
//            if (count == 0 && 48 <= ch && ch <= 57)    //不能数字开头
//            {
//                flag2 = 1;
//            }
//            //3种以外不能
//            else if (ch < 48 || (ch > 57 && ch < 65) || (ch > 90 && ch < 97) || ch>122)
//            {
//                flag2 = 1;
//            }
//            //必须有两种组合
//            if (48 <= ch && ch <= 57)
//            {
//                flag += 0;
//            }
//            if (65 <= ch && ch <= 90)
//            {
//                flag += 1;
//            }
//            if (97 <= ch && ch <= 122)
//            {
//                flag += 2;
//            }
//            count++;
//        }
//        //不能小于8
//        if (flag == 0 || flag == count || flag == count * 2 || flag2 == 1)
//        {
//            printf("NO\n");
//            count = 0;
//            flag = 0;
//            flag2 = 0;
//            continue;
//        }
//        if (count < 8)
//        {
//            printf("NO\n");
//        }
//        else
//        {
//            printf("YES\n");
//        }
//        count = 0;
//        flag = 0;
//        flag2 = 0;
//    }
//    return 0;
//}

//int removeElement(int* nums, int numsSize, int val) {
//    int i = 0, j = 0;
//    for (i = 0; i < numsSize; i++)
//    {
//        if (nums[i] == val)
//        {
//            if (i == numsSize - 1)
//            {
//                numsSize--;
//            }
//            else
//            {
//                for (j = i; j < numsSize - 1; j++)
//                {
//                    nums[j] = nums[j + 1];
//                }
//                numsSize--;
//                i--;
//            }
//        }
//    }
//    return numsSize;
//}
//
//int main()
//{
//    int arr[] = { 0,1,2,2,3,0,4,2 };
//    int s = removeElement(arr, sizeof(arr) / sizeof(int), 2);
//    for (int i = 0; i < s; i++)
//    {
//        printf("%d", arr[i]);
//    }
//    return 0;
//}

//int main()
//{
//	int t = 0;
//	while (printf("*"))
//	{
//		t++;
//		if (t < 3)
//			break;
//	}
//	return 0;
//}


//int GetNumberOfK(int* nums, int numsLen, int k) {
//    if (numsLen == 0)
//    {
//        return 0;
//    }
//    int head = 0;
//    int end = numsLen - 1;
//    int mid = numsLen / 2;
//    int i = mid;
//    int count = 0;
//    while (head <= end)
//    {
//        if (k > mid)
//        {
//            head = mid + 1;
//            mid = (head + end) / 2;
//        }
//        else if (k < mid)
//        {
//            end = mid - 1;
//            mid = (head + end) / 2;
//        }
//        else
//        {
//            break;
//        }
//    }
//    i = mid;
//    while (nums[i] == k && i >= 0)
//    {
//        i--;
//        count++;
//    }
//    i = mid + 1;
//    while (nums[i] == k && i < numsLen)
//    {
//        i++;
//        count++;
//    }
//    return count;
//}
//
//int main()
//{
//    int arr[] = { 0,0,0,0,0,0,0,0,1,1,1,1, 1,1, 1,1, 1,1, 2,2,2,2,2,2, 2,2, 2,2,3,3,3,3,3,3,3,4,4,4,4,4,4 };
//    int s = sizeof(arr) / sizeof(int);
//    printf("%d",GetNumberOfK(arr, s, 2));
//    return 0;
//}

//static int arr[1000] = { 0 };
//
//int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize) {
//    int i = 0, j = 0, sz = 0;
//    for (i = 0; i < nums1Size; i++)
//    {
//        for (j = 0; j < nums2Size; j++)
//        {
//            if (nums1[i] == nums2[j])
//            {
//                arr[sz++] = nums1[i];
//                break;
//            }
//        }
//    }
//    int p1 = 1, p2 = 1;  //从第二个开始
//    while (p1 < sz)
//    {
//        if (arr[p1 - 1] == arr[p1])    //和前一个比较，相同就不用存
//        {
//            p1++;
//        }
//        else
//        {
//            arr[p2++] = arr[p1++];
//        }
//    }
//    *returnSize = p2;
//    return arr;
//}

//void print(char* str)
//{
//	if (*str)
//	{
//		print(++str);
//		printf("%c", *str);
//	}
//}
//
//int main()
//{
//	char arr[] = { "Geneius" };
//	print(arr);
//	return 0;
//}

int fun(int x)
{
	return (x == 1) ? 1 : (x + fun(x - 1));
}

int main()
{
	printf("%d", fun(10));
	return 0;
}